﻿#pragma execution_character_set("utf-8")
#include "corediswidget.h"
#include "ui_corediswidget.h"
#include <QMessageBox>

/**
 * @brief 核心调度界面构造函数
 * @details 初始化界面组件并建立地图控件信号槽连接：
 * - 标签提示信号 -> 标签处理槽
 * - 起点选择信号 -> 起点处理槽
 * - 终点选择信号 -> 终点处理槽
 * - 列表清空信号 -> 列表清空槽
 * - 列表添加信号 -> 列表添加槽
 * @param parent 父组件指针
 */
CoreDisWidget::CoreDisWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::CoreDisWidget)
{
    ui->setupUi(this);
    connect(ui->widget,SIGNAL(sendLabelTip(QString)),this,SLOT(acceptLabelTip(QString)));
    connect(ui->widget,SIGNAL(sendStartPoint(QString)),this,SLOT(acceptStartPoint(QString)));
    connect(ui->widget,SIGNAL(sendStopPoint(QString)),this,SLOT(acceptStopPoint(QString)));
    connect(ui->widget,SIGNAL(sendListClear()),this,SLOT(acceptListClear()));
    connect(ui->widget,SIGNAL(sendListAdd(QString)),this,SLOT(acceptListAdd(QString)));
}

CoreDisWidget::~CoreDisWidget()
{
    delete ui;
}

void CoreDisWidget::acceptLabelTip(QString str)
{

}

void CoreDisWidget::acceptStartPoint(QString str)
{

}

void CoreDisWidget::acceptStopPoint(QString str)
{

}

/**
 * @brief 列表清空槽函数
 * @details 同步清除界面列表内容：
 * - 清空列表控件所有项
 * - 重置列表索引计数器
 * - 更新界面显示状态
 */
void CoreDisWidget::acceptListClear()
{
    ui->listWidget->clear();
}

/**
 * @brief 列表添加槽函数
 * @details 同步更新界面列表内容：
 * - 追加新条目到列表末尾
 * - 自动滚动到最新项
 * - 保持与地图控件操作同步
 * @param str 要添加的条目文本
 */
void CoreDisWidget::acceptListAdd(QString str)
{
    ui->listWidget->addItem(str);
}

/**
 * @brief 添加节点按钮点击事件
 * @details 激活地图控件的节点添加模式：
 * - 进入节点绘制状态
 * - 支持鼠标点击添加新节点
 * - 新节点自动加入拓扑网络
 */
void CoreDisWidget::on_pushButton_clicked()
{
    ui->widget->setAddNode();
}

/**
 * @brief 添加路径按钮点击事件
 * @details 激活路径连接模式：
 * - 需要先后选择两个有效节点
 * - 自动计算路径权重并创建连接
 * - 路径信息加入邻接矩阵
 */
void CoreDisWidget::on_pushButton_2_clicked()
{
    ui->widget->setAddPath();
}

void CoreDisWidget::on_pushButton_3_clicked()
{
    ui->widget->setDeleteNode();
}

void CoreDisWidget::on_pushButton_4_clicked()
{
    ui->widget->setDeletePath();
}

void CoreDisWidget::on_pushButton_7_clicked()
{
    ui->widget->setEditNode();
}

void CoreDisWidget::on_pushButton_6_clicked()
{
    ui->widget->findAllPaths();
}

void CoreDisWidget::on_pushButton_8_clicked()
{
    ui->widget->displayPathLen();
}

void CoreDisWidget::on_pushButton_5_clicked()
{
    ui->widget->setEditPathLen();
}

void CoreDisWidget::on_pushButton_10_clicked()
{
    ui->widget->clearMap();
}

/**
 * @brief 保存地图按钮点击事件
 * @details 执行地图数据持久化操作：
 * - 弹出文件保存对话框
 * - 序列化节点和路径数据
 * - 使用二进制格式存储拓扑结构
 * - 包含坐标信息和路径权重
 */
void CoreDisWidget::on_pushButton_12_clicked()
{
    ui->widget->saveMap();
}

/**
 * @brief 加载地图按钮点击事件
 * @details 从文件载入地图数据：
 * - 弹出文件选择对话框
 * - 反序列化二进制数据
 * - 重建拓扑网络结构
 * - 自动校验数据完整性
 */
void CoreDisWidget::on_pushButton_11_clicked()
{
    ui->widget->loadMap();
}

void CoreDisWidget::on_pushButton_13_clicked()
{
    ui->widget->loadImage();
}

void CoreDisWidget::on_pushButton_9_clicked()
{
    ui->widget->findAllPaths("北门","图书馆");
}

void CoreDisWidget::on_pushButton_14_clicked()
{
     emit sendDisWidget("m_AdminWidget");
}
